package com.chenjt.jvm.second.four_classLife;

import java.util.Random;

/**
 * 注释：
 *
 * 3.当使用类、接口的静态字段时(final修饰特殊考虑)，
 *  比如，使用getstatic或者putstatic指令。(对应访问变量、赋值变量操作)
 *
 * @author chenjt
 * @date 2025/7/2 8:40
 */
public class ActiveUse2 {

    public static void main(String[] args) {
        test1();
    }

    public static void test1(){
//        System.out.println(User.num);// 会执行类的<clinit>方法
//        System.out.println(User.num1);// 不会执行类的<clinit>方法
        System.out.println(User.num2);// 会执行类的<clinit>方法
    }


    public static void test2(){
//        System.out.println(CompareA.NUM1);// 不会执行类的<clinit>方法
        System.out.println(CompareA.NUM2);// 会执行类的<clinit>方法
    }



}


class User{

    static{
        System.out.println("User类的初始化过程");
    }

    public static int num = 1;
    public static final int num1 = 1;
    public static final int num2 = new Random().nextInt(10);

}

interface CompareA{

    public static final Thread t = new Thread(){
        {
            System.out.println("CompareA的初始化");
        }
    };

    public static final int NUM1 = 1;
    public static final int NUM2 = new Random().nextInt(10);

}
